//
//  MPTargetConfigMacros.h
//  target配置管理
//

#ifndef MPTargetConfigMacros_h
#define MPTargetConfigMacros_h


//#if PRODUCT  //产品环境
//
////输出转换成DDLog
//#define NSLog(...) DDLogVerbose(__VA_ARGS__)
//#define DLog(...) DDLogVerbose(__VA_ARGS__)
//
//#else   //其它环境
//
////输出转换成DDLog
//#define NSLog(...) DDLogVerbose(__VA_ARGS__)
//#define DLog(...) DDLogVerbose(__VA_ARGS__)
//
//#endif
//#ifdef __OBJC__
//
////static NSString * const NotificationContants_Advertise_Key =@"AdvertisePush";
//
//#endif


/**
 *      日志输出的控制，在开发过程中很多地方需要通过日志去查看效果或是数据的情况。
 *
 *  #ifdef DEBUG //处于开发阶段
 *  #define CLog(format, ...)  NSLog(format, ## __VA_ARGS__);
 *  #else//处于发布阶段--build conguration 设置为release模式
 *  #define CLog(format, ...);
 *  #endif
 *
 */
//  另一个日志宏的定义(输出的结果比较完善)
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif
/**
 *__VA_ARGS__是一个可变参数的宏，很少人知道这个宏，这个可变参数的宏是新的C99规范中新增的，目前似乎只有gcc支（VC6.0的编译器不支持）。宏前面加上##的作用在于，当可变参数的个数为0时，这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
 2.__FILE__宏在预编译时会替换成当前的源文件名
 3.__LINE__宏在预编译时会替换成当前的行号
 4.__FUNCTION__宏在预编译时会替换成当前的函数名称
 */


#endif /* MPTargetConfigMacros_h */
